Logical function generator

ABSTRACT

Apparatus and technique for generating logical functions and circuits, and for defining the circuit connections required to generate these functions thereby providing an aid in designing and constructing hardware to generate logical circuits.

United States Patent Silvertson, Jr.

[ Oct. 24, 1972 LOGICAL FUNCTION GENERATOR Wilford E. Silvertson, Jr., Yorktown, V.l.

Assignee: The United States of America as represented by the National Aeronautics and Space Administration Filed: Dec. 16, 1970 Appl. No.: 98,798

Inventor:

U.S. Cl. ..235/152, 307/207, 307/215 Int. Cl ..G06f 7/38, G06f 15/34 Field of Search ..235/152; 307/215, 207;

References Cited UNlTED STATES PATENTS 2/1971 Connelly ..340/1725 4/1968 Forslund et a1. ..307/207 X Primary Examiner--Malcolm A. Morrison Assistant-Examiner-James F. Gottman Attorney-Howard J. Osborn, William H. King and John R. Manning [57] ABSTRACT Apparatus and technique for generating logical functions and circuits, and for defining the circuit connections required to generate these functions thereby providing an aid in designing and constructing hardware to generate logical circuits.

6 Claims, 8 Drawing Figures CIRCUIT GENERATOR INPUT GENERATOR SWITCHING GENERATOR PATENTEDocr 24 I972 v sum 2 0r 6 23 FIG. 2

INVENTOR. WILFORD E. SIVERTSON, JR.

ATTORNE S INVENTOR.

AT 11% YS SHEET '4 0F 6 PATENTED'ncI 24 m2 WILFORD E. SIVERTSON, JR. BY 4% W if P'A'TENTEBncm I972 "SHEET 6 BF 6 h 05m NN NN v; F n; i? 5. a 0x N x J x NU 0 O mm mm mm mm mm INVENTOR. WILFORD E. SIVERTSON, JR.

BY mm 3 ATTORN YS LOGICAL FUNCTION GENERATOR ORIGIN OF THE INVENTION The invention described herein was made by an employee of the United States Government and may be manufactured and used by or for the Government for governmental purposes without the payment of any royalties thereon or therefor.

BACKGROUND OF THE INVENTION The invention relates generally to logical circuitry and more specifically concerns an aid in designing and constructing hardware to generate logical circuits.

Previous methods for designing logical circuits have relied on the mathematics of set theory and Boolean algebra; requiring the manipulation of equations until desired results are obtained. This is a time-consuming operation and incases where the simplest form is desired there is no known mathematical method for directly arriving at it. It is a trial and error process and relies on the skill of the individual and a knowledge of what will be accepted as simplest form. Defining what will be accepted as simplest form depends on many factors. The type of gate to be used as well as fan in, fan out, etc., must be considered in arriving at a reasonable definitionof simplest form. In most cases experience and intuition provide the best approach to generating this simplification definition andin some cases a well defined one cannot be found. Simplification techniques have been developed and are used. These include the Quine, Harvard, and Nelson methods as well as a number of mapping techniques. These provide methods for special simplifications, but they are not schemes for arriving at the simplest form for all cases. One such case is the case for circuits employing the NAND and NOR logical connective. In these cases simplification procedures arrive at a form of simplfication in terms of AND and OR and involves considerable manipulation if all functions of i variables and K connective elements are involved. This solution must then be converted to NAND or NOR form without regard to any alterations to simplest form that may result from this transformation. In a case where K=7 and F3 (considering only combinational circuits) there exist approximately 4 X circuit arrangements. Anyone can be simplest form. To determine the correct circuit a method must be used that exhausts or/in some way accounts all 4 X 10 circuits that are possible and isolates the one (or ones) appropriate. In the case of NAND NOR implementation there exists no known mathematical technique for arriving at simplest form. This forces one to solve for all 4 X 10 circuits in order to search for a simplest form. This places the problem beyond the time scale of any'individual using manual techniques, and present day computers (after extensive programing) cannot provide a practical means for solution. It is therefore the primary purpose of this invention to provide practical means for generating logical functions and circuits.

SUMMARY OF THE INVENTION This invention embodies the use of standard logical elements in the construction of a special purpose computer for use in automatically designing logic circuits. The Sheffer-stroke primitive and its dual the Pierce are widely used as fundamental logical elements. For this reason the NAND" logical element will be used to illustrate the technique with this invention. The use of NAND elements is not restrictive and it should be noted that any primitive can be used for constructing automatic logical function and circuit generating machines.

The basic scheme provides for switching to permute a number of input literals and recursive inputs into a number of logical connective elements. The outputs from these connective elements provide the set of all functions possible from these connective elements and input literals. In addition, monitoring the switching states provides the set of all logical circuit connections associated with the set of all generated functions with a one-to-many mapping existing between functions and circuits.

BRIEF DESCRIPTION OF THE, DRAWINGS FIG. 1 is a block diagram of this invention;

FIG. 2 is aschematic diagram of circuitry utilized i the circuit generator of this invention; I

FIG. 3 is a block diagram showing how the circuitry in FIG. 2 is used to form the circuit generator;

FIG. 4 is a schematic drawing of a simple embodiment of this invention;

FIG. 5 is a schematic drawing showing how constraints are put on the switching generator in FIG. 4;

FIG. 6 is a block diagram and schematic drawing of an input generator having three outputs and a switching generator having 45 constrained outputs;

FIG. 7 is a schematic drawing showing how a circuit generator can be built to handle all of the outputs from input and switching generators in FIG. 6; and

FIG. 8 is a block diagram showing one way in which this invention can be used.

DETAILED DESCRIPTION OF THE INVENTION Turning now to the embodiments of the invention selected for illustration in the drawings the number 11 designates a circuit generator. An input generator 12 generates all possible input combinations of the literals a q which are applied to circuit generator 11 on (i 1) lines. A switching generator 13 generates steering signals x x, on (i 1 lines as inputs to circuit generator 11. These steering signals gate the input literals (a a,)along with some connective element outputs into (k 1) logical connective elements (C having outputs fl, f One set of steering signals is generated for each input cycle. This provides for the generation of a different circuit for each input cycle; this process of steering continues until all circuits have been produced.

The circuit generator 11 supplies the logic required to generate different circuit connections as a function of the x x, switching signals. Control 14 provides timing and logical control for the system as required. The input generator 12 must produce and continue to regenerate input cycles. One cycle can be shown as an input matrix as follows:

a, (2 zeros) (2' ones) where: rows represent designation" numbers an columns represent minterms. I

If designation numbers are visualized as representing literals. and minterms as functions of position or time then the input matrix can be visualized-as the output from a generator generating all minterms of (i- 1) literals as a function of time. Thus a one cycle output of the input generator is a time sequence of 2" minterms. This can be mechanized in many ways. One simple method would use (i 1) bistable elements e e, (such as flip flops) connected as a binary counter and driven from a clock. The outputs would :be a,,, a a, from one side of each element (e, respectively, and logical complements could be provided from the remaining sides.

The circuit generator must provide a means for connecting (i 1) input lines to (k l) logical connective elements for handling combinational circuits, and for handling recursive circuits must also allow' outputs from each connective element to feed back as inputs to any others. Thus if there are (k l) logicalconnective elements (such.as NAND gates) and (i +1) input literals there exist 2' possible circuits. that can be generated.

It should be noted that all of the possible circuits indicated in Equation A are not desired. This will be covered later under a discussion of constraints.

The circuit generator (without considering constraints) must be capable of generating these circuits by an orderly switching of the output lines (x, x,) from the switching generator. This can be accomplished by generating an x, switching matrix similar to the a, input matrix. From this concept it follows that a counting register (driven at 2' times the a, matrix rate) of (j l bistable elements can be used where:

This will provide a switching generator output as a time sequence of 2 *minterms. One minterm for each 2 input generator drive pulses. Each x, matrix minterm represents a particular logical circuit connection producing outputs fi, -f as functions of (i 1) logical input literals. Thus each output (I}, f, f is a time sequence of ones and zeros representing the presence or absence of the input matrix rninterms according to the particular x, switching matrix state existing for any given input cycle. From this it follows that the output lines f,,, f,, f contain (as a time sequence) information defining designation numbers of f f ,f,, in terms of a,,, a a These outputs define the logical functions as designation numbers, while the state of the switching matrix defines the logical circuit producing those functions. From the designation number the function can be immediately written in logical form as a function of input literal, and from the switching matrix states the logic circuit can be immediately drawn and constructed. This readout can be manually obtained or obtained by various automatic means including automatic circuit drawing, wire table printout, and construction.

The circuit generator logic must provide a means for steering (i 1) inputs to the (k l) logical connective elements under control of the x, matrix. This requires that each literal and a connective output be gated with an or, output and that they be capable of being. connected to all connective element input lines. Where the logical sum of product equation form holds there will be (i 1) OR" gates required for each logical element and F +1 (k 2) (k- 1) AND gates required for each element. If NAND" gates are used to construct this gating each logical connective element will'require a circuit as shown in FIG. 2.

In FIG. 2 there is one c 'NAND gate 21 which has the outputs from (i l NAND gates 22 applied-to it. Each NAND gate 22 has the outputs from a 1 (k 2) (k 1) NAN D gates 23 applied to it. A switching signal x, is applied to an input of each of the NAND gates 23 where p successively increases by one from m through 11 starting at the top and where The signals a,,, a a f,, f,, f are applied to the other inputs of each group of NAND gates 23 that have their outputs applied to one of the NAND gates 22.

A circuit generator 11 contains (k l) circuits identical structurally to the one shown in FIG. 2'. The only difference is the inputs applied to the NAND gates 23. For the circuit that produced f the subscript p of the switching signals x, start at 2 m n 1 and goes through m l and for the circuit that produces f,,, p starts at a and goes through m n. The functions applied to the NAND gates23 are f}, f f with the one output function being produced by NAND gate 21 omitted. FIG. 3 shows a circuit generator 11 in block diagram form where each of the blocks contains circuitry identical to that disclosed in FIG. 2. The blocks B B Bg, produce the functions f,,, f,. f respectively, and have the inputs shown applied to the different blocks.

To illustrate the operational use of a machine of this type consider the following elementary example. Let i 1 and k 0. Then following the procedure that has been discussed the system of FIG. 4 is obtained. The input generator 12 consists of flip-flops 25 and 26. A clock 27 produces pulses which are applied to the trigger of flip-flop 25. Hence an input cycle generated by input generator 12 is:

- The switching generator 13 consists of four flip-flops literals. e

g I Input Switching Designation No. Cycle Minterm For f f, (a,, 0,)

1 I M, l l l l l 2 M, l l l l l a M 1 111 1 6 M 1010 aa 9 M 1111 I I0 M 10 a, at ll M I110 a 12 M v [100 a 13 M 111] I I4 M 1010 a 15 M 1 0 I I6 M 1000 a a Inspection of Table I will show an f (a,,, a that would not be obtained in the physical case using a single NAND gate 21. This is the function generated from M This function is generated by the x, matrix as a result of not having provided constraints in designing the switching matrix. The x; matrix has not been constrained to restrict switching only to states generating physically realizable wire connections for the particular logical connective element being used. In the case cited the x, matrix has simulated the connection of a and a to a single input line of NAND gate 21 effectively creating a hard wire logical OR connection. In practice this is not allowed. Also, f (a,,, a resulting from M,,,M,, M M M M and M are not useful circuits since they simulate a no-input condition for gate 21. To correct for these undesired circuit and function generations, constraints can be placed on the x, matrix. In the cases shown if x is forced to be the logical complement of x and if x is forced to be the logical complement of x;, a proper constraint is obtained, and the results are shown in the following Table II.

TABLE II Input Switching Designation No. Cycle Minterm forf, f, (a,,, a

l M, 1010 a, 2 M 1110 a,, a, 3 M, I110 11 a, 4 M 1100 a The switching generator for generating the functions in Table II is shown in FIG. 5.

The idea of placing constraints on x,- provides a means for eliminating unnecessary circuit setups mak ing useful function-circuit generation faster and more direct. Defining the nature of the constraint becomes a difficult task, and as i and k take on larger values the difficulty increases.

There should be a number of methods for obtaining useful constraints. One simple solution for i l, k 0 has been shown where complement x, terms were used. A solution, useful for any i and k value, can be found by using a combination shift and count register for the generation of the x, matrix. FIG. 6 indicates one method for mechanizing this for a system with i= 2 and k 2. This technique is not restricted by the magnitude of i and k but can be extended to include any combination of values.

As can be seen from Equation B, for i 2 and k= 2, j 44. Hence, the switching generator must generate 45 terms. This is accomplished in FIG. 6 by using fifteen separate circuits 35 connected in tandem as shown. Each circuit 35 consists of flip-flops 36, 37 and 38. a is connected to the trigger of each of these flip-flops in the first 35 circuit. An initial condition for the flip-flops in each 35 circuit (shift register) is selected such that it forces flip-flop 36 to a logical one initial state and all other flip-flops (37, 38) are set initially to the logical zero state. The switching signals x 1: and x are taken at the 1 output of the flip-flops. Each of these flip flops is the type that when triggered its I output follows the logic applied to its 0 input. The input generator in FIG. 6 is the circuit consisting of flip-flops 39, 30 and 41. The B suitable for use with the input and function generators in FIG. 6 is shown in FIG. 7. The B and B required for use with FIG. 6 are identical to the circuitry in FIG. 7 except that different inputs are applied to the NAND gates 23.

It can be shown that constraints should exist such that the limits for j are as shown in Equation C.

[t (k+1 +k (i+1) +k (3H2) +21 2j [16 0+2 +1] (Equation 0) least amount of hardware. Then he sets the values g in an input function register 45 and inputs this function to a comparator 46. He then starts the logic function circuit generator (11, 12, and 13). When one output function f is generated such that f or f or f 3, comparator 46 generates a stop order that will stop further circuit generation. This can be done by having the stop order stop the clock. The output from the switching generator has structured and defines the connections necessary to design a circuit for generating g.

This procedure is repeated until the output of switching generator 13 generates all possible combinations of the switching signals for which circuit generator 11 generates an f that is equal to g. The designer can then select the circuit that requires the least hardware.

Another way in which this invention can be used is as a remote control device such as a control device on a spacecraft. Suppose that circuit generator 11 is on a spacecraft and suppose that it is desired that the generator produce g for controlling some function on the spacecraft. Then g is transmitted to the input register 45 on board the spacecraft. The logic function circuit generator is then started and as soon as f, or f, or f g comparator 46 produces a stop function g and will continue to do so until it gets further orders.

This invention has several advantages over the prior art. 'It provides a means for quickly and automatically designing logic and eliminates involved and time-consuming mathematical manipulations. It eliminates the need for the use of expensive and large general purpose computing facilities for logic design. It eliminates lengthy, expensive, and difficult computer programing. It provides a method for directly finding minimal circuits for NAND NOR" logic although no known direct mathematical method exists. And it provides a means for quickly mapping functions to circuits and provides a tool for use in conducting research on minimal NAND NOR form.

Even though only NAND" elements have been disclosed it should be understood that other logical elements such as AND, OR and NOR elements could be used without departing from the spirit and scope of this invention as defined in the following claims. I

What is claimed as new and desired to be secured by Letters Patent of the United States is:

l. A logical function generator for sequentially generating binary signals in parallel representing the designation numbers for the functions f f,, f comprising:

a continuously recycling input generator means for generating binary signals in parallel representing all of the values of thebinary number a a a, during each cycle; switching generator means under the control of said input generating means for generating binary signalsin parallel representing all of the values of the binary number x,,:r x, with the value of x x x,- changing only at the end of each cycle of said,

input generator means; and

circuit generator means receiving the signals representing the values of a,,,' a x x x, for producing k+l sequences of binary signals in parallel with each sequence for each cycle of said input'generator means representing the designation number of one of the functions f,,, f f wherebythe values x x x, define connections for designing logical circuits for generating the logical functions f f f said circuit generating means includes k+1 function generating circuit means with each circuit means receiving the signals representing the values of a a a f,,,f .f,, ,f,, f and selected ones of the values of x x x, for'generating the function f where (p=0, l, k).

2. A logical function generator according to claim 1 wherein said switching generator means includes means for constraining the switching generator means such that values of the number x,,, x x, that do not define useful connections are not generated.

3. A logical function generator according to claim 1 wherein said input and switching generators each includes a series of flip-flops with the least significant flip-flop of the input generator being driven by a source of clock pulses and with the switching generator driven by the most significant flip-flop of the input generator.

4. A logical function generator according to claim 1 wherein each of said k+1 function generating circuit means includes three subgroups of logical circuit elements with the first of said subgroups consisting of a single element for producing f,,, with the second of said subgroups of logical sircuit elements having their outputs connected to the inputs of said single element, with the third of said subgroups of logical circuit elements having their outputs connected to the inputs of said second subgroups of logical circuit elements and withthea,,,a .a ,x,,,x x fi f .f,, ,f,, f values connected to the inputs of said third subgroups of logical circuit elements.

5. A logical function generator according to claim -4 wherein said third subgroup of logical circuit elements is divided into sub-subgroups with the outputs of each sub-su' o a lied t the in uts of one of the elements in sa i se zz nd su group 2nd with the values, a,,,

a a fi f .f,. ,f,, f and selected ones of the values of x x x, applied to the inputs of the elements in each of said sub-subgroups.

6. A logical function generator according to claim 1 including means for storing a binary function g in parallel form and comparing means for comparing the binary function f, generated by said circuit generator means with g and for producing signal that stops said input and switching generators when any f g. 

1. A logical function generator for sequentially generating binary signals in parallel representing the designation numbers for the functions fo, f1, . . . , fk comprising: a continuously recycling input generator means for generating binary signals in parallel representing all of the values of the binary number ao a1 . . . ai during each cycle; switching generator means under the control of said input generating means for generating binary signals in parallel representing all of the values of the binary number xox1 . . . xj with the value of xo x1 . . . xj changing only at the end of each cycle of said input generator means; and circuit generator means receiving the signals representing the values of ao, a1, xo, x1, . . . xj for producing k+1 sequences of binary signals in parallel with each sequence for each cycle of said input generator means representing the designation number of one of the functions fo, f1, . . . fk whereby the values xo, x1, . . . xj define connections for designing logical circuits for generating the logical functions fo, f1, . . . fk; said circuit generating means includes k+1 function generating circuit means with each circuit means receiving the signals representing the values of ao, a1, . . . , ai, fo, f1, . . . fp 1, fp 1, . . . fk and selected ones of the values of xo, x1 . . . , xj for generating the function fp where (p 0, 1, . . . k).
 2. A logical function generator according to claim 1 wherein said switching generator means includes means for constraining the switching generator means such that values of the number xo, x1 . . . xj that do not define useful connections are not generated.
 3. A logical function generator according to claim 1 wherein said input and switching generators each includes a series of flip-flops with the least significant flip-flop of the input generator being driven by a source of clock pulses and with the switching generator driven by the most significant flip-flop of the input generator.
 4. A logical function generator according to claim 1 wherein each of said k+1 function generating circuit means includes three subgroups of logical circuit elements with the first of said subgroups consisting of a single element for producing fp, with the second of said subgroups of logical sircuit elements having their outputs connected to the inputs of said single element, with the third of said subgroups of logical circuit elements having their outputs connected to the inputs of said second subgroups of logical circuit elements and with the ao, a1 . . . a1, xo, x1, . . . xj, fo, f1, . . . fp 1, fp 1 . . . fk values connected to the inputs of said third subgroups of logical circuit elements.
 5. A logical function generator according to claim 4 wherein said third subgroup of logical circuit elements is divided into sub-subgroups with the outputs of each sub-subgroup applied to the inputs of one of the elements in said second subgroup and with the values, ao, a1 . . . ai, fo, f1, . . . fp 1, fp 1, . . . fk and selected ones of the values of xo, x1, . . . xj applied to the inputs of the elements in each of said sub-subgroups.
 6. A logical function generator according to claim 1 including means for storing a binary function g in parallel form and compariNg means for comparing the binary function fp generated by said circuit generator means with g and for producing signal that stops said input and switching generators when any fp g. 